package main

import "fmt"

func main() {
	/*
		goto 语句：
			只能跳到同级作用域或上层作用域内，不能跳到内部作用域内

		注：在结构化程序设计中一般不主张使用 goto语句，以免造成程序流程的混乱，使理解和调试程序都产生困难。
	*/
	var a = 10
LOOP:
	for a < 20 {
		if a == 15 {
			a++
			goto LOOP
		}
		fmt.Printf("a 的值为：%d\n", a)
		a++
	}

	fmt.Println("--------------------")
	for i := 1; i <= 10; i++ {
		for j := 0; j <= 10; j++ {
			if j == 2 {
				fmt.Println("j==2")
				goto breakHere
			}
		}
	}
	return // 手动返回，避免执行进入标签。。
breakHere:
	fmt.Println("done...")

	//内部作用域，不可行
	//n := 1
	//if n%2 == 1 {
	//	goto L1
	//}
	//
	//for n > 0 {
	//	f()
	//	n--
	//L1:
	//	f()
	//	n--
	//}
}
